load("@rules_cc//cc:defs.bzl", "cc_library")

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "boost.test",
    srcs = glob(
        ["src/*.cpp"],
        exclude = [
            "src/cpp_main.cpp",
            "src/test_main.cpp",
            "src/unit_test_main.cpp",
        ],
    ),
    hdrs = glob([
        "include/**/*.hpp",
        "include/**/*.ipp",
    ]),
    defines = [
        "BOOST_TEST_NO_LIB",
    ],
    includes = ["include"],
    deps = [
        "@boost.algorithm",
        "@boost.assert",
        "@boost.bind",
        "@boost.config",
        "@boost.core",
        "@boost.detail",
        "@boost.exception",
        "@boost.function",
        "@boost.io",
        "@boost.iterator",
        "@boost.mpl",
        "@boost.numeric_conversion",
        "@boost.optional",
        "@boost.preprocessor",
        "@boost.smart_ptr",
        "@boost.static_assert",
        "@boost.type_traits",
        "@boost.utility",
    ],
)

cc_library(
    name = "cpp_main",
    srcs = ["src/cpp_main.cpp"],
    deps = [":boost.test"],
)

cc_library(
    name = "test_main",
    srcs = ["src/test_main.cpp"],
    deps = [":boost.test"],
)

cc_library(
    name = "unit_test_main",
    srcs = ["src/unit_test_main.cpp"],
    deps = [":boost.test"],
)
